Content Script 是在使用者造訪符合條件的頁面時注入的 JavaScript 腳本。
若設定不當,可能造成:
因此,最佳化注入時機 可以 extension 更穩定、快速,也更節省資源。
在 manifest.json 的 content_scripts 設定中,可以加上 run_at
屬性來指定注入時機
例如:
{
"content_scripts": [
{
"matches": ["https://gitlab.com/*"],
"js": ["contentScript.js"],
"run_at": "document_idle"
}
]
}
值 | 注入時機 | 適用情境 |
---|---|---|
document_start |
在 HTML 解析開始時注入 | 想要攔截或修改網頁載入流程(如刪除追蹤 script) |
document_end |
在 DOM 建立完成但資源尚未完全載入時注入 | 想操作初始 DOM(如插入按鈕、監聽事件) |
document_idle |
頁面載入完成後(預設) | 大部分情況,尤其是 UX 類功能(避免干擾頁面載入) |
除了在 manifest.json 靜態定義外,也可以透過 chrome.scripting.executeScript()
動態注入 Content Script,這樣可以避免在所有分頁自動注入,提高效能。
例如:
// background.js
chrome.action.onClicked.addListener((tab) => {
chrome.scripting.executeScript({
target: { tabId: tab.id },
files: ['contentScript.js']
});
});
https://gitlab.com/*
),不要用 *://*/*
。